const Koa = require('Koa');
const app = new Koa();
app.use(async (ctx) => {
  // ctx.method得到请求类型
  if (ctx.url === '/' && ctx.method === 'GET') {
    let html = '<h1>Koa2 request post demo</h1>' +
      '<form method = "POST" action = "/">' +
      '<p> userName </p>' +
      '<input name = "userName" /><br/>' +
      '<p> age </p>' +
      '<input name = "age"/> <br/>' +
      '<p> webSite </p>' +
      '<input name = "webSite"/> <br/>' +
      '<button type = "submit"> submit </button>'
    '</form>';
    ctx.body = html;
  } else if (ctx.url === '/' && ctx.method === 'POST') {
    let postData = await parsePostData(ctx);
    ctx.body = postData;
  } else {
    ctx.body = '<h1>404</h1>'
  }
})


function parsePostData(ctx) {
  return new Promise((resolve, reject) => {
    try {
      let postdata = '';
      ctx.req.on('data', function (data) {
        postdata += data
      })
      ctx.req.addListener('end', function () {
        let parseData = parseQueryStr(postdata);
        resolve(parseData)
      })
    } catch (error) {
      reject(error);
    }
  })
}

function parseQueryStr(queryStr) {
  let queryData = {};
  let queryStrList = queryStr.split('&');
  for (let [index, queryStr] of queryStrList.entries()) {
    let itemList = queryStr.split('=');
    queryData[itemList[0]] = decodeURIComponent(itemList[1]);
  }
  return queryData
}
app.listen(3000, () => {
  console.log('start');
})